package com.example.jianzhioffer;

import java.util.ArrayList;

/**
 * Created by Quincy on 2018/9/23.
 */
public class FirstAppearingOnce {

    /**
     * 因为一个字符不会超过8位，所以创建一个大小为256的整形数组，创建一个List，存放只出现一次的字符。
     * insert时先对该字符所在数组位置数量+1，再判断该位置的值是否为1，如果为1，就添加到List中，
     * 不为1，则表示该字符已出现不止1次，然后从List中移除，
     * 取出时先判断List的size是否为0，不为0直接List.get(0)，就可以得到结果，否则返回‘#’
     * */
    ArrayList<Character> list = new ArrayList<>();
    int[] countArr = new int[128];
    //Insert one char from stringstream
    public void Insert(char ch)
    {
        countArr[ch]++;
        if (countArr[ch] == 1){
            list.add(ch);
        }else {
            list.remove(ch);
        }
    }
    //return the first appearence once char in current stringstream
    public char FirstAppearingOnce()
    {
        if (list.size() == 0)
            return '#';
        else
            return list.get(0);
    }
}
